#! /usr/bin/env python
# -*- coding: UTF-8 -*-

#unittest.TestCase ，测试用例，可以指定 metaclass = Meta ，让unittest执行中，显式用例执行的次序.
import unittest

# 继承了type类，
class Meta(type):
    def __new__(cls, name, parents, attrs):
        LONG = 4
        id = 1
        _attrs = {}

        for k, v in attrs.items():
            if k.startswith('test_'):
                id_str = str(id).zfill(LONG)
                _k = k.replace('test_', 'test_{}_'.format(id_str))
                _attrs[_k] = v
                id += 1
            else:
                _attrs[k] = v

        print(_attrs)

        return type.__new__(cls, name, parents, _attrs) #创建类本身

#python中，创建一个类对象，首先要创建 类本身，然后才创建具体类的对象
#在python中，没有什么不是对象，包括类本身，是type类型的实例


class TestA(unittest.TestCase, metaclass=Meta):
    #先运行
    def test_a(self):
        print("test_a")
    def test_b(self):
        print("test_b")



